From: Keir Fraser Date: Fri, 1 Aug 2008 08:54:54 +0000 (+0100) Subject: ioemu, passthrough: fix flag for expansion rom base address register. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14165^2~45 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=85d4d8cb0553b453d0ed843299072c5ab6a527da;p=xen.git ioemu, passthrough: fix flag for expansion rom base address register. pt_bar_reg_parse() is called for expansion rom base address register. Currently it returns PT_BAR_FLAG_MEM if bit 0 is 0. It returns PT_BAR_FLAG_IO if bit 0 is 1. But bit 0 in expansion rom base address register is enable bit. If bit 0 is 1 for some reason, it returns PT_BAR_FLAG_IO. Expansion rom is mapped to memory space. It should return PT_BAR_FLAG_MEM. After applying this patch, it returns PT_BAR_FLAG_MEM regardless of bit 0, when it is called for expansion rom base address register. Signed-off-by: Yuji Shimada --- diff --git a/tools/ioemu/hw/pass-through.c b/tools/ioemu/hw/pass-through.c index 428845f2c9..ce24034de0 100644 --- a/tools/ioemu/hw/pass-through.c +++ b/tools/ioemu/hw/pass-through.c @@ -1528,6 +1528,13 @@ static int pt_bar_reg_parse( if (!r->size) goto out; + /* for ExpROM BAR */ + if (index == PCI_ROM_SLOT) + { + bar_flag = PT_BAR_FLAG_MEM; + goto out; + } + /* check BAR I/O indicator */ if (d->config[reg->offset] & PCI_BASE_ADDRESS_SPACE_IO) bar_flag = PT_BAR_FLAG_IO;